package org.openmore.opc.service;

import org.openmore.opc.dto.api.RoleDto;
import org.openmore.opc.entity.Role;

import java.util.List;

public interface RoleService {

    /**
    * 根据id获得Entity对象
    * @param id
    * @return
    */
    Role getEntityById(String id);

    /**
     * 根据id获得dto对象
     * @param id
     * @return
     */
    RoleDto getDtoById(String id);

    /**
     * 分页获得所有记录
     * @return
     */
    List<RoleDto> selectAll(String id, String name);

    /**
     * root用户获得所有的角色列表，并且返回角色对应的社区信息
     * @return
     */
    List<RoleDto> getDtoFullInfo(String name);

    /**
     * 为一个角色指定权限列表，以逗号间隔
     * @return
     */
    void grantPermission(String roleId, String permissionList);

     /**
      * 插入指定数据
      * @return
     */
    RoleDto insert(RoleDto role);

    /**
     * 根据id删除数据
     */
    void deleteById(String id);

    /**
     * 更新指定的对象数据
     */
    void update(RoleDto role);

    /**
     * 根据员工id获得角色列表
     * ############################################################################
     * # 仅在配置shiro权限时使用，其它时候，使用getPermissionsByStaffId，直接获得用户权限
     * ############################################################################
     * @param mail
     * @return
     */
    List<Role> getRolesByEmail(String tenantId, String mail);


    /**
     * 根据code获得实体对象
     */
    Role getEntityByCode(String code);
}